home *** CD-ROM | disk | FTP | other *** search
-
-
- #include <stdio.h>
- #include <dos.h>
-
- #ifndef TRUE
- #define TRUE 1
- #define FALSE 0
- #endif
-
- int mouse_status(void); /* Check for mouse driver */
- void mouse_config(void); /* Get mouse information */
- int which_port(void); /* Which serial port inuse */
-
- char *mouse_type[] = { /* Mouse types */
- "Not Defined",
- "Bus MOuse",
- "Serial Mouse",
- "InPort Mouse",
- "PS/2 Mouse",
- "HP MOuse",
- NULL
- };
-
- struct mouse_info { /* Mouse info structure */
- int major; /* Driver major version */
- int minor; /* Driver minor version */
- int m_type; /* Mouse type */
- int irq_num; /* Mouse type */
- int n_buttons; /* Number of mouse buttons */
- };
-
- struct mouse_info m_info;
-
- unsigned far *com1_vec = (unsigned far *) 0x00000030;
- /* Addr of Com1 vector */
- unsigned far *com2_vec = (unsigned far *) 0x0000002C;
- /* Addr of Com2 vector */
- unsigned far *mouse_vec = (unsigned far *) 0x000000CC;
- /* Addr of Mouse vector
- */
- main ()
- {
- if (mouse_status ())
- { /*Check for mouse driver */
- mouse_config(); /* Get mouse information */
- printf ("Microsoft or compatible mouse driver \
- present...\n");
- printf("Mouse driver version is %d.%d\n",
- m_info.major,m_info.minor);
- printf("Mouse type is %s\n",
- mouse_type[m_info.m_type]);
- printf("Mouse had %d buttons\n",m_info.n_buttons);
- printf("Mouse IRQ Level is %d\n", m_info.irq_num);
- if (m_info.m_type == 2)
- printf("Mouse is using serial port \
- COM%d:\n",which_port());
- }
- else
- printf("No Microsoft or compatible mouse driver \
- present...\n");
- exit (0);
- }
- /****************************************************************
- int mouse_status(void) - Check for the presence of a mouse
- driver
- Input arguments - None.
- Returns _ TRUE (1) if Mouse driver present.
- False (0) if no Mouse driver
- available.
- *****************************************************************/
-
- int mouse_status(void)
- {
- union REGS regs;
-
- regs.x.ax = 0; /*Function zero - Get mouse status */
- int86(0x33, ®s, ®s); /* Call the mouse driver */
- if (regs.x.ax == 0xFFFF)
- { /* If return -1 then mouse present */
- m_info.n_buttons = regs.x.bx;
- /* Store number of buttons on mouse */
- return (TRUE); /* Report Mouse present */
- }
- return(FALSE); /* Mouse driver not available */
- }
- /*************************************************************
-
- void mouse_config(void) - Get mouse configuration
-
- Input arguments - None.
- Returns - None.
-
- *************************************************************/
-
- void mouse_config(void)
- {
- union REGS regs;
-
- regs.x.ax = 0x0024; /* Function 0x24 -get mouse config */
- int86(0x33, ®s, ®s); /* Call the mouse driver */
- m_info.major = regs.h.bh; /* Save major version of
- driver */
- m_info.minor = regs.h.bl; /* Save minor version of
- driver */
- m_info.m_type = ((regs.h.ch > 0 && regs.h.ch < 6) ?
- regs.h.ch : 0);
- m_info.irq_num = regs.h.cl; /* Save mouse IRQ level */
-
- }
- /*************************************************************
- int which_port (void) - Check which serial port the mosue
- is using.
- Input arguments - None.
- Returns - 1 - COM1 in use.
- 2 - COM2 in use.
- 0 - Neither COM1 nor COM2 in
- use.
- ****************************************************************/
-
- int which_port(void)
- {
- if (*(mouse_vec+1) == *(com1_vec+1))
- return(1);
- if (*(mouse_vec+1) == *(com2_vec+1))
- return(2);
- return (0);
- }
-
- ********
-
-